﻿#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//using namespace std;
//
//class Person
//{
//public:
//	virtual void BuyTicket() const
//	{
//		cout << "买票-全价" << endl;
//	}
//};
//class Student : public Person
//{
//public:
//	virtual void BuyTicket() const
//	{
//		cout << "买票-半价" << endl;
//	}
//};
//
//void func(const Person& p)
//{
//	p.BuyTicket();
//}
//
//int main()
//{
//	func(Person());
//	func(Student());
//
//	return 0;
//}

//#include<iostream>
//using namespace std;
//
//class Person
//{
//public:
//	Person()
//	{
//		++_count;
//	}
//protected:
//	string _name; // 姓名
//public:
//	static int _count; // 统计人的个数。
//};
//int Person::_count = 0;
//class Student : public Person
//{
//protected:
//	int _stuNum; // 学号
//};
//class Graduate : public Student
//{
//public:
//	string _seminarCourse; // 研究科目
//	void TestPerson()
//	{
//		Student s1;
//		Student s2;
//		Student s3;
//		Graduate s4;
//		cout << " 人数 :" << Person::_count << endl;//5
//		Student::_count = 0;
//		cout << " 人数 :" << Person::_count << endl;
//	}
//
//};
//
//int main()
//{
//	Graduate g1;
//	g1.TestPerson();
//
//	return 0;
//}

//class Person
//{
//public:
//	string _name;// 姓名
//};
//
//class Student :virtual public Person
//{
//protected:
//	int _num;//学号
//};
//
//class Teacher :virtual public Person
//{
//protected:
//	int _id;// 职工编号
//};
//
//class Assistant :public Student, public Teacher
//{
//protected:
//	string _majorCourse; // 主修课程
//};
//
//void Test()
//{
//	Assistant a;
//	a._name = "peter";
//}
//
//int main()
//{
//	Test();
//	return 0;
//}

#include<iostream>
using namespace std;
// Car和BMW Car和Benz构成is-a的关系
class Car {
protected:
	string _colour = "白色"; // 颜色
	string _num = "陕ABIT00"; // 车牌号
};
class BMW : public Car {
public:
	void Drive() { cout << "好开-操控" << endl; }
};
class Benz : public Car {
public:
	void Drive() { cout << "好坐-舒适" << endl; }
};
// Tire和Car构成has-a的关系
class Tire {
protected:
	string _brand = "Michelin";  // 品牌
	size_t _size = 17;     // 尺寸
};
class Car {
protected:
	string _colour = "白色"; // 颜色
	string _num = "陕ABIT00"; // 车牌号
	Tire _t; // 轮胎
};

//class A
//{
//public:
//	int _a;
//};
//
//class B :virtual public A
//{
//public:
//	int _b;
//};
//
//class C :virtual public A
//{
//public:
//	int _c;
//};
//
//class D :public B, public C
//{
//public:
//	int _d;
//};
//
//int main()
//{
//	D d;
//	d.B::_a = 1;
//	d.C::_a = 2;
//	d._b = 3;
//	d._c = 4;
//	d._d = 5;
//
//	return 0;
//}